package ar.com.sistventa.form;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

import ar.com.sistventa.form.articulos.AgregarModificarArticulosForm;
import ar.com.sistventa.form.articulos.ArticulosForm;
import ar.com.sistventa.form.clientes.ClientesForm;
import ar.com.sistventa.form.ventas.VentasForm;
import ar.com.sistventa.utils.Constantes;
import de.javasoft.plaf.synthetica.SyntheticaSkyMetallicLookAndFeel;

public class PrincipalForm extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;

	private JMenuItem mniAgregarArticulo;
	private JMenuItem mniBuscarArticulo;
	private JMenuItem mniActualizacionDePreciosArticulos;
	private JMenuItem mniSalidaMercaderia;
	private JMenuItem mniConsultaSalidas;
	private JMenuItem mniAgregarClientes;
	private JMenuItem mniIngresoMercaderia;
	private JMenuItem mniPagoProveedores;
	private JMenuItem mniConsultaCompras;
	private JMenuItem mniFacturas;
	private JMenuItem mniPresupuestos;
	private JMenuItem mniNotasDeCredito;
	private JMenuItem mniCobranzas;
	private JMenuItem mniConsultarFacturas;
	private JMenuItem mniConsultarPresupuestos;
	private JMenuItem mniConsultarNotasDeCredito;
	private JMenuItem mniConsultarCobranzas;
	private JMenuItem mniAgregarProveedores;
	private JMenuItem mniBuscarProveedor;
	private JMenuItem mniAgregarVendedor;
	private JMenuItem mniComisiones;
	private JMenuItem mniReportedeVentas;
	private JMenuItem mniBuscarCliente;
	private JMenuItem mniConsultaPagosProveedor;
	private JMenuItem mntmBuscarVendedor;
	private JMenuItem mntmCajaDelDia;
	private JMenuItem mntmIngresosVarios;
	private JMenuItem mntmGastosVarios;
	private JMenuItem mntmRetiros;
	private JMenuItem mntmUsuarios;
	private JMenuItem mntmMarcas;
	private JMenuItem mntmCategorias;
	private JMenuItem mntmUnidades;
	private JMenuItem mntmDatosGenerales;
	private JMenuItem mntmIngreso;
	private JSeparator separator_1;
	private JMenuItem mntmAcercaDe;
	private JMenuItem mntmManualDeUsuario;
	private JMenuItem mntmSalir;
	private JSeparator separator_2;
	private JMenu mnArticulos_1;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					PrincipalForm frame = new PrincipalForm();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	private void iniciarLookAndFeel() {
		try {
			//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			//UIManager.setLookAndFeel(new SyntheticaBlackMoonLookAndFeel());
			UIManager.setLookAndFeel(new SyntheticaSkyMetallicLookAndFeel());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the frame.
	 */
	public PrincipalForm() {
		setResizable(false);
		setTitle("Sistema de Ventas");
		iniciarLookAndFeel();
		setLocationRelativeTo(null);
		initForm();
		iniciarActionListener();
	}

	private void initForm() {
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 682, 451);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JMenuBar menuPrincipal = new JMenuBar();
		menuPrincipal.setBounds(0, 0, 714, 21);
		contentPane.add(menuPrincipal);

		JMenu mnArticulos = new JMenu("Articulos");
		menuPrincipal.add(mnArticulos);

		mniAgregarArticulo = new JMenuItem("Agregar Articulo");
		mnArticulos.add(mniAgregarArticulo);
		
		mniBuscarArticulo = new JMenuItem("Buscar Articulo");
		mnArticulos.add(mniBuscarArticulo);

		mniActualizacionDePreciosArticulos = new JMenuItem(
				"Actualizacion de Precios");
		mnArticulos.add(mniActualizacionDePreciosArticulos);

		JSeparator sepArticulos = new JSeparator();
		mnArticulos.add(sepArticulos);

		mniSalidaMercaderia = new JMenuItem("Salida de Mercaderia");
		mnArticulos.add(mniSalidaMercaderia);

		mniConsultaSalidas = new JMenuItem("Consulta de Salidas");
		mnArticulos.add(mniConsultaSalidas);

		JMenu mnClientes = new JMenu("Clientes");
		menuPrincipal.add(mnClientes);

		mniAgregarClientes = new JMenuItem("Agregar Cliente");
		mnClientes.add(mniAgregarClientes);
		
		mniBuscarCliente = new JMenuItem("Buscar Cliente");
		mnClientes.add(mniBuscarCliente);

		JMenu mnCompras = new JMenu("Compras");		
		menuPrincipal.add(mnCompras);

		mniIngresoMercaderia = new JMenuItem("Ingreso de Mercaderia");
		mnCompras.add(mniIngresoMercaderia);

		mniPagoProveedores = new JMenuItem("Pago a Proveedores");
		mnCompras.add(mniPagoProveedores);

		JSeparator sepCompras = new JSeparator();
		mnCompras.add(sepCompras);

		mniConsultaCompras = new JMenuItem("Consultar Compras");
		mnCompras.add(mniConsultaCompras);
		
		mniConsultaPagosProveedor = new JMenuItem("Consulta Pagos a Proveedores");
		mnCompras.add(mniConsultaPagosProveedor);

		JMenu mnVentas = new JMenu("Ventas");
		menuPrincipal.add(mnVentas);

		mniFacturas = new JMenuItem("Facturas");
		mnVentas.add(mniFacturas);

		mniPresupuestos = new JMenuItem("Presupuestos");
		mnVentas.add(mniPresupuestos);

		mniNotasDeCredito = new JMenuItem("Notas de Credito");
		mnVentas.add(mniNotasDeCredito);

		mniCobranzas = new JMenuItem("Cobranzas");
		mnVentas.add(mniCobranzas);

		JSeparator sepVentas = new JSeparator();
		mnVentas.add(sepVentas);

		mniConsultarFacturas = new JMenuItem("Consultar Facturas");
		mnVentas.add(mniConsultarFacturas);

		mniConsultarPresupuestos = new JMenuItem("Consultar Presupuestos");
		mnVentas.add(mniConsultarPresupuestos);

		mniConsultarNotasDeCredito = new JMenuItem("Consultar Notas de Credito");
		mnVentas.add(mniConsultarNotasDeCredito);

		mniConsultarCobranzas = new JMenuItem("Consultar Cobranzas");
		mnVentas.add(mniConsultarCobranzas);

		JMenu mnProveedores = new JMenu("Proveedores");
		menuPrincipal.add(mnProveedores);

		mniAgregarProveedores = new JMenuItem("Agregar Proveedor");
		mnProveedores.add(mniAgregarProveedores);
		
		mniBuscarProveedor = new JMenuItem("Buscar Proveedor");
		mnProveedores.add(mniBuscarProveedor);

		JMenu mnVendedores = new JMenu("Vendedores");
		menuPrincipal.add(mnVendedores);

		mniAgregarVendedor = new JMenuItem("Agregar Vendedor");
		mnVendedores.add(mniAgregarVendedor);
		
		mntmBuscarVendedor = new JMenuItem("Buscar Vendedor");
		mnVendedores.add(mntmBuscarVendedor);

		JSeparator sepVendedor = new JSeparator();
		mnVendedores.add(sepVendedor);

		mniComisiones = new JMenuItem("Comisiones");
		mnVendedores.add(mniComisiones);

		mniReportedeVentas = new JMenuItem("Reportes de Ventas");
		mnVendedores.add(mniReportedeVentas);

		JMenu mnCaja = new JMenu("Caja");
		menuPrincipal.add(mnCaja);
		
		mntmIngresosVarios = new JMenuItem("Ingresos Varios");
		mnCaja.add(mntmIngresosVarios);
		
		mntmGastosVarios = new JMenuItem("Gastos Varios");
		mnCaja.add(mntmGastosVarios);
		
		mntmRetiros = new JMenuItem("Retiros");
		mnCaja.add(mntmRetiros);
		
		separator_2 = new JSeparator();
		mnCaja.add(separator_2);
		
		mntmCajaDelDia = new JMenuItem("Caja del Dia");
		mnCaja.add(mntmCajaDelDia);

		JMenu mnReportes = new JMenu("Reportes");
		menuPrincipal.add(mnReportes);
		
		mnArticulos_1 = new JMenu("Articulos");
		mnReportes.add(mnArticulos_1);

		JMenu mnAdministracion = new JMenu("Administracion");
		menuPrincipal.add(mnAdministracion);
		
		mntmDatosGenerales = new JMenuItem("Datos Generales");
		mnAdministracion.add(mntmDatosGenerales);
		
		JSeparator separator = new JSeparator();
		mnAdministracion.add(separator);
		
		mntmUsuarios = new JMenuItem("Usuarios");
		mnAdministracion.add(mntmUsuarios);
		
		mntmMarcas = new JMenuItem("Marcas");
		mnAdministracion.add(mntmMarcas);
		
		mntmCategorias = new JMenuItem("Categorias");
		mnAdministracion.add(mntmCategorias);
		
		mntmUnidades = new JMenuItem("Unidades");
		mnAdministracion.add(mntmUnidades);
		
		separator_1 = new JSeparator();
		mnAdministracion.add(separator_1);
		
		mntmIngreso = new JMenuItem("Ingreso");
		mnAdministracion.add(mntmIngreso);

		JMenu mnAyuda = new JMenu("Ayuda");
		menuPrincipal.add(mnAyuda);
		
		mntmAcercaDe = new JMenuItem("Acerca de ...");
		mnAyuda.add(mntmAcercaDe);
		
		mntmManualDeUsuario = new JMenuItem("Manual de Usuario");
		mnAyuda.add(mntmManualDeUsuario);

		JMenu mnSalida = new JMenu("Salida");
		menuPrincipal.add(mnSalida);
		
		mntmSalir = new JMenuItem("Salir");
		mnSalida.add(mntmSalir);

		JButton btnArticulos = new JButton("");
		btnArticulos.setToolTipText("Articulos");
		btnArticulos.setIcon(new ImageIcon(Constantes.IMAGEN_ARTICULO));
		btnArticulos.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonArticulos();
			}
		});
		btnArticulos.setBounds(10, 30, 75, 75);
		contentPane.add(btnArticulos);

		JButton btnClientes = new JButton("");
		btnClientes.setToolTipText("Clientes");
		btnClientes.setIcon(new ImageIcon(Constantes.IMAGEN_CLIENTE));
		btnClientes.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonClientes();
			}
		});
		btnClientes.setBounds(90, 30, 75, 75);
		contentPane.add(btnClientes);

		JButton btnCompras = new JButton("");
		btnCompras.setToolTipText("Compra");
		btnCompras.setIcon(new ImageIcon(Constantes.IMAGEN_COMPRA));
		btnCompras.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonCompras();
			}
		});
		btnCompras.setBounds(170, 30, 75, 75);
		contentPane.add(btnCompras);

		JButton btnVentas = new JButton("");
		btnVentas.setToolTipText("Venta");
		btnVentas.setIcon(new ImageIcon(Constantes.IMAGEN_VENTA));
		btnVentas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonVentas();
			}
		});
		btnVentas.setBounds(250, 30, 75, 75);
		contentPane.add(btnVentas);

		JButton btnConsultarVentas = new JButton("");
		btnConsultarVentas.setToolTipText("Consultar Venta");
		btnConsultarVentas.setIcon(new ImageIcon(Constantes.IMAGEN_CONSULTAR_VENTA));
		btnConsultarVentas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonConsultarVentas();
			}
		});
		btnConsultarVentas.setBounds(330, 30, 75, 75);
		contentPane.add(btnConsultarVentas);

		JButton btnNotas = new JButton("");
		btnNotas.setToolTipText("Nota");
		btnNotas.setIcon(new ImageIcon(Constantes.IMAGEN_NOTA));
		btnNotas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonNotas();
			}
		});
		btnNotas.setBounds(410, 30, 75, 75);
		contentPane.add(btnNotas);

		JButton btnReportes = new JButton("");
		btnReportes.setToolTipText("Reportes");
		btnReportes.setIcon(new ImageIcon(Constantes.IMAGEN_REPORTE));
		btnReportes.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonReportes();
			}
		});
		btnReportes.setBounds(490, 30, 75, 75);
		contentPane.add(btnReportes);

		JButton btnSalir = new JButton("");
		btnSalir.setToolTipText("Salir");
		btnSalir.setIcon(new ImageIcon(Constantes.IMAGEN_SALIR_GRANDE));
		btnSalir.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				eventoBotonSalir();
			}
		});
		btnSalir.setBounds(570, 30, 75, 75);
		contentPane.add(btnSalir);
		
		JLabel lblArticulo = new JLabel("Articulo");
		lblArticulo.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblArticulo.setBounds(20, 110, 59, 14);
		contentPane.add(lblArticulo);
		
		JLabel lblClientes = new JLabel("Clientes");
		lblClientes.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblClientes.setBounds(100, 110, 59, 14);
		contentPane.add(lblClientes);
		
		JLabel lblCompras = new JLabel("Compras");
		lblCompras.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblCompras.setBounds(180, 110, 59, 14);
		contentPane.add(lblCompras);
		
		JLabel lblVentas = new JLabel("Ventas");
		lblVentas.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblVentas.setBounds(260, 110, 59, 14);
		contentPane.add(lblVentas);
		
		JLabel lblConsultar = new JLabel("Consultar");
		lblConsultar.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblConsultar.setBounds(340, 110, 59, 14);
		contentPane.add(lblConsultar);
		
		JLabel lblNotas = new JLabel("Notas");
		lblNotas.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblNotas.setBounds(420, 110, 59, 14);
		contentPane.add(lblNotas);
		
		JLabel lblReporte = new JLabel("Reporte");
		lblReporte.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblReporte.setBounds(500, 110, 59, 14);
		contentPane.add(lblReporte);
		
		JLabel lblSalir = new JLabel("Salir");
		lblSalir.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblSalir.setBounds(595, 110, 51, 14);
		contentPane.add(lblSalir);
		
		JLabel label = new JLabel("Ventas");
		label.setFont(new Font("Tahoma", Font.BOLD, 11));
		label.setBounds(347, 130, 59, 14);
		contentPane.add(label);
	}

	private void eventoBotonArticulos() {
		ArticulosForm articulosForm = new ArticulosForm(this);
		articulosForm.setVisible(true);
	}

	private void eventoBotonClientes() {
		ClientesForm clientesForm = new ClientesForm(this, true);
		clientesForm.setVisible(true);
	}

	private void eventoBotonCompras() {

	}

	private void eventoBotonVentas() {
		VentasForm ventasForm = new VentasForm(this, true);
		ventasForm.setVisible(true);
	}

	private void eventoBotonConsultarVentas() {

	}

	private void eventoBotonNotas() {
		NotasForm notasForm = new NotasForm(this);
		notasForm.setVisible(true);
	}

	private void eventoBotonReportes() {

	}

	private void eventoBotonSalir() {
		System.exit(DISPOSE_ON_CLOSE);
	}

	private void iniciarActionListener() {
		// ARTICULO
		mniAgregarArticulo.addActionListener(this);
		mniBuscarArticulo.addActionListener(this);
		mniActualizacionDePreciosArticulos.addActionListener(this);
		mniSalidaMercaderia.addActionListener(this);
		mniConsultaSalidas.addActionListener(this);
		// CLIENTES
		mniAgregarClientes.addActionListener(this);
		// COMPRAS
		mniIngresoMercaderia.addActionListener(this);
		mniPagoProveedores.addActionListener(this);
		mniConsultaCompras.addActionListener(this);
		// VENTAS
		mniFacturas.addActionListener(this);
		mniPresupuestos.addActionListener(this);
		mniNotasDeCredito.addActionListener(this);
		mniCobranzas.addActionListener(this);
		mniConsultarFacturas.addActionListener(this);
		mniConsultarPresupuestos.addActionListener(this);
		mniConsultarCobranzas.addActionListener(this);
		// PROVEEDORES
		mniAgregarProveedores.addActionListener(this);
		mniBuscarProveedor.addActionListener(this);
		// VENDEDORES
		mniAgregarVendedor.addActionListener(this);
		mniComisiones.addActionListener(this);
		mniReportedeVentas.addActionListener(this);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		/* Articulo */
		if (e.getSource() == mniAgregarArticulo) {
			AgregarModificarArticulosForm agregarModificarArticulosForm = new AgregarModificarArticulosForm(
					this, null, Constantes.AGREGAR);
			agregarModificarArticulosForm.setVisible(true);
			e.setSource(null);
		}
		
		if (e.getSource() == mniAgregarArticulo) {
			ArticulosForm articulosForm = new ArticulosForm(this);
			articulosForm.setVisible(true);
			e.setSource(null);
		}
		
		/* Proveedor */

	}
}
